#ifndef _COMMENT_H
#define _COMMNET_H
#include <stdio.h>
#include <arpa/inet.h>
#include <pthread.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdbool.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <pthread.h>
#include <sys/select.h>
#include <signal.h>
#include <sys/epoll.h>
#include <sqlite3.h>

typedef struct hostAddr
{
     char ip[16];//字符串IP
     unsigned short port;//端口号
}HOSTADDR;

typedef struct registerU//注册结构体
{
     int id;
     char name[50];
     char pwd[50];
     char phone[15];
     char date[20];
     char role[20]; // 用户类型
     int wallet; // 余额
}RGU;

typedef struct log//登录结构体
{
     int id;
     char name[50];
     int fd;
     int status;
}LOG;

typedef struct game_accounts // 游戏账号信息结构体
{
     int id;
     char name[50];
     char game_name[50];
     char items[300]; // 内容介绍
     int status;
     char time[50];
     int price;
}GAME_AC;

typedef struct leave//留言结构体
{
     int l_id; // 留言id
     int g_id; // 游戏的id
     char name[50]; // 用户名
     int r_id; // 回复某一条留言的id
     char items[300]; // 留言
     int status; // 留言状态
     char time[50]; // 留言时间
}LEAVE;

//枚举
typedef enum 
{
     baodao,
     login,
     regist,
     chat,
     groupChat,
     singleChat,
     addFriend,
     quit,
     ok,
     no,
     my_account, // 查看我的账号消息
     shell, // 售卖
     repe, // 重复
     chat_goumai, // 交流与购买
     mistake, // 错误
     chat_quit, // 退出聊天
     quitall, // 退出账号
     user_goumai, // 购买
     user_goumaiover, // 购买结束
     examine, // 检查是否有未读消息
     examinelook, // 显示消息
     examinelookall, // 显示所有消息
     no_news, // 没有消息
     affirm_self, // 确认是不是自己的账号
     bodyname, // 自己的账号
     notbodyname, // 别人的账号
     leave, // 留言
     queryChatRec_leave, // 有留言
     order, // 订单
     queryChatRec,
     queryOver,
     showgamezhanghao_all, // 查看所有账号
     showgamezhanghao_name, // 根据用户名显示账号
     showgamezhanghao_gamename  //  根据游戏名显示账号
}MSG_TYPE;

typedef struct msg
{
     MSG_TYPE type;//消息类型
     char buf[1020];//消息的内容
}MSG;


//登录信息
typedef struct loginInfo
{
     char name[128];//用户名
     int fd;//用户套接字，如果是TCP这里应该用户的套接字
}LOGIN_INFO;

typedef struct invitation//论坛帖子的结构体
{
     int id;
     char text[500];
     char name[128];
     char time[32];
}INVIT;

//私聊的结构体
typedef struct
{
     int id;
     char selfName[50];//自己的名字
     char destName[50];//对方的名字
     int game_id; // 游戏id
     char text[500];//聊天的内容
     int status; // 消息是否读取
     char time[50]; // 记录时间
}SINGLE_CHAT;

// 购买结构体
typedef struct
{
     int id;
     char selfName[50];//自己的名字
     char destName[50];//对方的名字
     int game_id; // 游戏id
     int price; // 价格
     char time[50]; // 记录时间
}GOUMAI_CHAT;


typedef struct queryResult
{
     char **pzResult;        // 查询结果的指针
     int row;            // 查询到的数据的行数
     int col;            // 查询到的数据的列数
}QUREY_RST;

//把网络的地址结构体转为本地用户能够识别的地址
HOSTADDR convertNetToHost(struct sockaddr_in addr);
void test();

#endif